
#include "sqlite.h"


bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open()) return false;

    QSqlQuery query;
    bool ok;
    ok = query.exec(QObject::tr("create table student (id int primary key, name vchar)"));
    if(!ok)//sqlite设置为主键，给主键赋0值，或者不赋值，主键的数字会自加
        qDebug()<<"query，创建新table->student失败:"<<query.lastError();

    ok = query.exec(QObject::tr("insert into student (name,age,class) VALUES ('lucy',15,'一班')"));
    if(!ok)
        qDebug()<<"query，插入新行，测试失败:"<<query.lastError();


    ok = query.exec(QObject::tr("select name from sqlite_master where type='table' order by name"));
    if(!ok)
        qDebug()<<"query，列出数据库中所有的表，失败:"<<query.lastError();
    else
    {
        qDebug()<<"query，数据库中所有的表，名称如下:";
        while(query.next())
        {
            qDebug()<<query.value(0).toString();
        }
    }

    ok = query.exec(QObject::tr("select count(*) from sqlite_master where type='table'"));
    if(!ok)
        qDebug()<<"query，查询数据库中有多少张自建表。测试失败:"<<query.lastError();
    else
    {
        while(query.next())
            qDebug()<<"数据库中共有多少张自建表:"<<query.value(0).toInt();
    }


    ok = query.exec(QObject::tr("select count(*) from sqlite_master where type='table' and name = 'student'"));
    if(!ok)
        qDebug()<<"query，查找指定的table名在数据库中的索引，测试失败:"<<query.lastError();
    else
    {
        query.first();//定位到query结果集的第一条记录处
        qDebug()<<"student表在结果集中的索引(0=不存在表)为"<<query.value(0).toInt();
    }

    ok = query.exec(QObject::tr("select count(*) from sqlite_master where type='table' and name = 'teacher'"));
    if(!ok)
        qDebug()<<"query，查找指定的table名在数据库中的索引，测试失败:"<<query.lastError();
    else
    {
        query.first();//定位到query结果集的第一条记录处
        qDebug()<<"teacher表在结果集中的索引(0=不存在表)为"<<query.value(0).toInt();
    }

    ok = query.exec(QObject::tr("select count(*) from sqlite_master where type='table' and name = 'school'"));
    if(!ok)
        qDebug()<<"query，查找指定的table名在数据库中的索引，测试失败:"<<query.lastError();
    else
    {
        query.first();//定位到query结果集的第一条记录处
        qDebug()<<"school表，在库中的索引(0=不存在表)为:"<<query.value(0).toInt();
    }

    ok = query.exec(QObject::tr("select name,age from student"));
    if(!ok)
        qDebug()<<"query，在student中查找name列，测试失败:"<<query.lastError();
    else
    {
        while(query.next())
            qDebug()<<"名字:"<<query.value(0)<<"age:"<<query.value(1);
    }


    return true;
}
